package com.psbc.data.trans.util;

import cn.hutool.db.Db;
import cn.hutool.db.Entity;
import com.zaxxer.hikari.HikariDataSource;

import javax.sql.DataSource;
import java.sql.SQLException;
import java.util.List;

/**
 * @author zhenyu.wu
 * @date 2024/4/12 8:43
 */
public class DataSourceUtil {

    /**
     * 创建运行时动态数据源
     *
     * @param jdbcUrl  jdbc地址
     * @param username 用户名
     * @param password 密码
     * @return 连接池，使用后手动关闭
     */
    public static DataSource createDataSource(String jdbcUrl, String username, String password) {
        HikariDataSource hikariDataSource = new HikariDataSource();
        hikariDataSource.setJdbcUrl(jdbcUrl);
        hikariDataSource.setUsername(username);
        hikariDataSource.setPassword(password);
        return hikariDataSource;
    }
    
    /**
     * 查询实例
     *
     * @param dataSource 数据源
     * @param sql        查询sql
     * @return 查询结果
     */
    public static List<Entity> selectDb(DataSource dataSource, String sql) {
        Db db = new Db(dataSource);
        try {
            return db.query(sql);
        } catch (SQLException e) {
            throw new RuntimeException(e);
        }
    }
}
